public class ArrayUtil{
    public String[][] getSubArray(String[][] sourceArray, int rowStart, int rowEnd, int columnStart, int columnEnd){
        int subArrayRows = rowEnd - rowStart +1;
        int subArrayCols = columnEnd - columnStart +1;

        String[][] subArray = new String[subArrayRows][subArrayCols];


        for (int i = 0; i < subArrayRows; i++) {
            for (int j = 0; j < subArrayCols; j++) {
                subArray[i][j] = sourceArray[i + rowStart][j + columnStart];
            }
        }
        return subArray;
    }

    public String[][] setSubArray(String[][] targetArray, String[][] subArray, int rowStart, int columnStart){
        int subArrayRows = subArray.length;
        int subArrayCols = subArray[0].length;
        if( (rowStart + subArrayRows)> targetArray.length){
            System.out.println("行越界");
            return null;
        }
        if ( (columnStart + subArrayCols) > targetArray[0].length){
            System.out.println("列越界");
            return null;
        }

        for (int i = rowStart; i < rowStart + subArrayRows; i++) {
            for (int j = columnStart; j < columnStart + subArrayCols; j++) {
                targetArray[i][j]= subArray[i-rowStart][j-columnStart] ;
            }
        }
        return targetArray;
    }

    public static void main(String[] args){
        String[][] targetArray = {
                {"a","b","c"},
                {"e","f","g"},
                {"h","i","j"}
        };
        String[][] subArray = {
                {"F","G"},
                {"I","J"}
        };
        ArrayUtil au = new ArrayUtil();
        String[][] ta = au.setSubArray(targetArray,subArray,1,1);
        for (String[] row : ta) {
            for (String value : row) {
                System.out.print(value );
            }
            System.out.println();
        }

        String[][] sa = au.getSubArray(targetArray, 0,2,1,2);
        for (String[] row : sa) {
            for (String value : row) {
                System.out.print(value );
            }
            System.out.println();
        }

    }
}
